1. Field of the Invention
This invention is related to the field of distributed storage management. In particular, it relates to a method and apparatus for storing objects in a local object store, or cache, for use by one or more local users or clients in a client/server environment.
2. Description of the Related Art
Client/server object storage systems have been used to store and manage a wide variety of digital objects such as documents, graphics, audio, video, spread sheets and word-processing text. Such digital objects are known generally as binary large objects (blobs). The IBM IMAGEPLUS VISUALINFO product provides such capabilities.
A conceptual view of the client/server relationship in IBM's IMAGEPLUS VISUALINFO is shown in FIG. 1 and includes a library server 10, one or more object servers 20 and a library client 30. Each of the library and object servers and the client includes an information store. That is, the library server 10 includes a library catalog 12, the object server 20 includes an object store 22 and the library client 30 includes a client cache 32, as shown in FIG. 3. Also, a communications isolator (not shown) is included which allows the library server, object server and library client to communicate with one another without concern for complex communications protocols. The library server, object servers and clients are connected by a communications network, such as a wide-area network (WAN).
The library clients 30 each send requests to the library server 10 to store, retrieve, and update objects stored in object servers 20, and to update and query the object indexes and descriptive information stored in library catalog 12. Library client requests are generated by library patrons. These patrons are users who have been granted privileges for the use of the library system.
Two types of library servers have been used, a host based library server (HBLS) and a LAN based library server (LBLS). The HBLS, is a program that can be implemented in a mainframe computer in an IBM MVS/ESA environment running under CICS. The library catalog that it interacts with can be implemented with an IBM DATABASE 2 (DB2) database.
The LBLS is a program implemented in a workstation environment, such as under the IBM OS/2 operating system. The library catalog with which it interacts can be implemented using an IBM OS/2 D32 database.
Before a library client request is processed, library server 10 checks library catalog 12 to ensure that the patron's name and password are valid. Next, the library server ensures that the patron has been granted the appropriate privileges to perform the requested action. Each patron is assigned a set of privileges by a system administrator. An example of a library privilege is the ability to delete objects.
Finally, the library server checks to ensure that the object's owner has granted the patron the privileges needed to do what is requested (e.g., update the object). The owner of an object is the patron who first stored the object. When an owner stores an object that owner must specify which other patrons are to have access to the object.
Objects stored in the library system can be checked out by a patron for a specified period of time. This feature can be used to ensure that one patron's updates to an object are not overwritten by another. While an object is checked out by a patron, other patrons can retrieve the object and view it, but they cannot update it. In typical implementations, there are groups of individuals who need access to the same objects. Therefore, to simplify the process of granting access to objects, a system administrator can define patrons as members of a group. When a patron is defined as a member of a group, that patron is able to access any object for which the group has been granted privileges. Additionally, patrons can access objects for which they have been specifically granted individual privileges. A patron can set default groups whose members will have access to the objects the patron stores. When patrons store objects, they have the option to use this default group, to grant specific privileges to groups and individual patrons, or to do both.
If a library client request involves the storage, retrieval, or update of an object, library server 10 forwards the request to the object server 20 that contains or will store the object(s) referred to in the request based upon information provided by library catalog 12. If the library client request is a query of the information stored in library catalog 12, library server 10 will interact only with library catalog 12 and will not contact object server 20.
The library catalog is analogous to a conventional library's card catalog. It is a single set of database tables which contain an index of all the objects stored in the library system. In addition, it can store information such as textual descriptions for each object, information on the type of object (e.g., image object, spreadsheet, text document), library patron names and privileges, access authorization data for each object, links between objects. The library catalog can also store a virtually unlimited number of property type/property value pairs for each object (e.g., name/John, Age/35, Address/1 Greenway Drive). These property type/property value pairs are known as an object's properties.
An object server 20 maintains objects stored within the library system. Objects are stored or retrieved from an object store 22 by object server 20. Object server 20 receives requests from library server 10 and communicates with library client 30 to complete the requests. Such a library system can contain several distributed object servers.
Two types of object servers have been used, a host based object server (HBOS) and a LAN based object server (LBOS). The HBOS is a program implemented on a mainframe computer, for example in a MVS/ESA environment running under CICS. It interacts with the IBM Object Access Method (OAM) to provide object storage. The LBOS is a program implemented in a workstation, such as in an OS/2 environment, and provides object storage on a local area network (LAN).
When a library patrons's privileges are defined a default object server can be set for the patron. When a patron stores an object, it will be stored in the default object server for that patron. If it is later determined that an object or a group of objects should be relocated to a different object server, a client application can move the objects from one object server to another. Also, a system managed storage method, such as that disclosed in a U.S. patent application Ser. No. 08/036,305 filed Mar. 24, 1993 and assigned to IBM Corporation (BT992063), entitled "A Method And System For Parallel, System Managed Storage For Objects On Multiple Servers" by T. G. Burket et al. which is incorporated herein by reference, provides a means for moving an object from one object server to another.
An LBOS can be located on any workstation having sufficient hardware resources and is connected to the library server. Furthermore, LBOS can be located at a site remote from the library server and local to the user. This allows selected objects to be stored close to a remote group of library patrons who will frequently use these objects. This capability is called distributed object storage. Distributed object storage helps to reduce the costs associated with sending objects over communications lines and provides better performance in storing and retrieving objects.
The HBOS interacts with the IBM OAM to implement an object store that is maintained as a set of IBM DB2 tables. These DB2 tables can be monitored, backed up, and recovered using standard DB2 utilities. OAM is capable of managing its information store using a combination of direct access storage devices (DASD) and write once read many (WORM) optical storage.
LBOS implements its object store by using a combination of the LBOS workstation hard drives and an optional optical library subsystem (often called an optical jukebox). The optical library supported by LBOS is capable of storing optical cartridges internally. Shelf-resident optical cartridge support is also provided, thus greatly expanding the storage capacity of the optical server. LBOS controls the migration of objects between the workstation hard drive, which functions as a staging area, and optical storage. Because a workstation's hard drive can access stored information faster than an optical jukebox, LBOS ensures that newly stored objects and objects that have recently been retrieved are maintained on the workstation hard drive. As the workstation hard drive becomes full, LBOS removes those objects to optical storage that has been least recently accessed to free storage space for new objects. A single drive optical drive can also be attached to LBOS to provide a transaction log as a backup mechanism for the optical library.
LBOS includes a variety of storage administration functions, such as transaction logging and the ability to write out duplicate copies of images and files to support full backup and recovery.
The library client 30 is the interface through which application programs can submit requests to the library system. These can include requests to store objects, update/add descriptors to objects, delete objects and query information in the library catalog. Library requests can be submitted through the library client either individually or in batches.
The client cache 32 is a specialized function, implemented on a user's workstation. The cache is used to locally hold copies of objects that have been stored to or retrieved from the object server. These local copies allow very fast access to objects. When a copy of an object is retrieved from the library system, it is stored in client cache 32 of the requesting library client 30. When library request orders are submitted by library client 30 to library server 10 a copy of the request is also stored in client cache 32.
FIG. 3 illustrates the data flow in a conventional digital client/server library system. A client, such as client 30, can be located remotely from the library server 10 and object server 20. Typically, the client 30 is connected to library server 10 and object server 20 via a wide-area network (WAN). Moreover, object server 20 may be connected to library server 10 via a WAN.
When a requesting client 30 requests an object, or binary large object (blob), it sends a request 1 to library server 10. Upon receipt of the request, library server 10 determines, after consulting library catalog 12, the object server which owns and stores the requested object. Here, the owning object server is shown as object server 20, to which library server 10 issues a request 2. Upon receiving the request 2, object server 20 retrieves the blob from object store 22 and sends a copy of it to client 30. The double line 3 shown in FIG. 3 identifies a copy of the blob which is transmitted from object server 20 to requesting client 30. Object server 20 stores the blob in client cache 32. When the blob is successfully transmitted to client cache 32 object server 20 sends a response 4 to library server 10 upon successful transfer of the blob to client cache 32. Library server 10, in turn, sends a response 5 to requesting client 30 indicating to the client that the blob was successfully transferred, which allows the client to retrieve the blob from client cache 32 for use by a client application.